# --------------------pytest 可以灵活的挑选测试用例执行----------------

"""---------根据目录
指定一个模块
可以像这样只挑选一个模块执行
python -m pytest cases\login_in\test_错误登录.py

指定目录
可以像这样只挑选一个目录执行
python -m pytest cases
也可以指定多个目录
python -m pytest case cases\login in

指定模块里面的函数或者类
指定一个类
python -m pytest cases\login in\test_错误登录.py::Test_错误密码
也可以指定类里面的方法
python -m pytest cases\login in\test_错误登录.py::Test_错误密码::test_C001001
"""

"""---------根据名字
可以使用命令行参数 -k 后面加名字来挑选要执行的测试项
注意，-k 后面的名字
* 可以是测试函数的名字，可以是类的名字，可以是模块文件名，可以是目录的名字
* 是大小写敏感的
* 不一定要完整，只要能有部分匹配上就行
* 可以用 not 表示选择名字中不包含，比如
pytest -k "not C001001" -s
可以用 and 表示选择名字同时包含多个关键字，比如
pytest -k "错 and 密码2" -s
可以用 or 表示选择名字 包含指定关键字之一即可，比如
pytest -k "错 or 密码2" -s
"""


"""---------根据标签
可以这样给 某个方法加上标签 webtest
import pytest

class Test_错误密码2:
    @pytest.mark.webtest
    def test_C001021(self):
        print('\n用例C001021')
        assert 1 == 1
然后，可以这样运行指定标签的用例
pytest cases -m webtest -s
也可以这样给整个类加上标签

@pytest.mark.webtest
class Test_错误密码2:
    def test_C001021(self):
        print('\n用例C001021')
        assert 1 == 1
        
当然标签也支持中文
@pytest.mark.网页测试
class Test_错误密码2:
    def test_C001021(self):
        print('\n用例C001021')
        assert 1 == 1
然后，运行命令行指定标签
pytest cases -m 网页测试 -s

可以这样同时添加多个标签
@pytest.mark.网页测试
@pytest.mark.登录测试
class Test_错误密码2:

    def test_C001021(self):
        print('\n用例C001021')
        assert 1 == 1
        
可以这样定义一个全局变量 pytestmark 为整个模块文件设定标签
import pytest
pytestmark = pytest.mark.网页测试
如果你需要定义多个标签，可以定义一个列表
import pytest
pytestmark = [pytest.mark.网页测试, pytest.mark.登录测试]
"""